package com.itheima.myreggie2.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.myreggie2.common.R;
import com.itheima.myreggie2.entity.Orders;
import com.itheima.myreggie2.service.IOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 订单
 */
@Slf4j
@RestController
@RequestMapping("/orders")
public class OrderController {

    @Autowired
    IOrderService orderService;


    /**       用户下单
     * ### 订单相关需求
     * #### 接口一：去支付，生成订单
     * 请求url地址：/order/submit
     * 请求方式：POST
     * 请求参数：JSON
     * 响应结果【格式统一】：R<String>
     */
//由于下单的逻辑相对复杂，我们可以在OrderService中定义submit方法，来处理下单的具体逻辑：
    @PostMapping("/submit")
    public R<String> submitOrder(@RequestBody Orders orders){

        orderService.submit(orders);
        return R.success("下单成功");

    }
    /**   #### 接口二：分页查询订单
     * 请求url地址：/order/userPage?page=1&pageSize=5
     * 请求方式：GET
     * 请求参数：?page=1&pageSize=5
     * 响应结果【格式统一】：R<Page>
     */
    @GetMapping("/page")
    public R<Page<Orders>> queryByPage(@RequestParam Integer page,Integer pageSize){
        //@RequestParam 可加，可不加

        //创建分页构造对象
        Page<Orders> ordersPage = new Page<>(page,pageSize);

        //创建条件构造器对象
        LambdaQueryWrapper<Orders> wrapper = new LambdaQueryWrapper<>();

        //设置条件，比如降序
        wrapper.orderByDesc(Orders::getCheckoutTime);

        //调用业务层的分页查询方法
        Page<Orders> page1 = orderService.page(ordersPage, wrapper);

        return R.success(page1);


    }


}
